<?php

require_once "session.php";
require_once "package_bd.class";
require_once "html.class";
require_once "getElement.class";

/*##############################################################
# PROGRAMA: Cadastro de Filial
# DATA CRIAÇÃO: 09/10/2007
# PROGRAMADOR: Rafael Luis de Souza Garbin
# ARQUIVO DO PROGRAMA: cadFilial.php
#
#
# CLASSES RELACIONADAS
#  -> formularios.class
##############################################################*/

	error_reporting(E_ALL);
		
	$banco = new genericDB;
	$banco->setBanco('MYSQL');
	$banco->setConexao('competence','','SGI','localhost');
	
	$banco->conecta(true);
    
	$css = array( "css/default.css");
    $js = "";

    $geraHeader = new html();
    $geraHeader->getCabecalhoHtml("","#FFFFFF",$js,$css,"");
    $f = new cadFilial($banco,$_REQUEST);
    $geraHeader->getEndHtml();
	
    class cadFilial
    {
		var $erro;
		var $acao;
				
		var $estId;
		var $cidId;
		var $filId;
		var $filDescricao;
		var $funcId;
		
        function cadFilial(&$DB,&$requests)
        {
			$this->REQUESTS = $requests;
			$this->conn = &$DB;
			$this->QRY = new genericQuery($this->conn);	
			$this->getElement = new getElement($this->conn);
			$this->clearProperties();
			$this->setProperties();
            $this->controle();
        }

		function setProperties()
		{
			if (isset($this->REQUESTS['acao'])){$this->acao = $this->REQUESTS['acao'];}
			if (isset($this->REQUESTS['cidId'])){$this->cidId =$this->REQUESTS['cidId'];}
			if (isset($this->REQUESTS['estId'])){$this->estId = $this->REQUESTS['estId'];}
			if (isset($this->REQUESTS['filId'])){$this->filId = $this->REQUESTS['filId'];}
			if (isset($this->REQUESTS['funcId'])){$this->funcId = $this->REQUESTS['funcId'];}
			if (isset($this->REQUESTS['filDescricao'])){$this->filDescricao = $this->REQUESTS['filDescricao'];}
		}
		
		function clearProperties()
		{
			$this->erro = array();
			$this->erro[0] ='Verifique os seguintes erros:';
			$this->acao = "";
			$this->estId = "";
			$this->cidId = "";
			$this->filId = "";
			$this->funcId = "";
			$this->filDescricao = "";
		}
		
		function controle()
		{	
			switch(trim($this->acao)) {
				case "RECARREGAR":
					$this->frmCadFilial("Gravar");
					$this->listaFiliais();					
				break;
				
				case "Alterar":
					if ($this->validaDados()) {
						if ($this->alterarFilial()) {
							$this->clearProperties();
							$this->frmCadFilial("Gravar");
							$this->listaFiliais();
							echo "<script language='javaScript'>alert('Filial alterada com sucesso.');</script>";
						} else {
							$this->frmCadFilial("Alterar");
							$this->listaFiliais();
							$this->erro[] = 'Não foi possível gravar a filial,Contate o Administrador!';
						}
					} else {
						$this->frmCadFilial("Alterar");
						$this->listaFiliais();
					}
				break;
								
				case "Gravar":
					if ($this->validaDados()) {
						if ($this->gravaFilial()) {
							$this->clearProperties();
							$this->frmCadFilial("Gravar");
							$this->listaFiliais();
							echo "<script language='javaScript'>alert('Filial salva com sucesso.');</script>";
						} else {
							$this->frmCadFilial("Gravar");
							$this->listaFiliais();
							$this->erro[] = 'Não foi possível gravar a filial,Contate o Administrador!';
						}
					} else {
						$this->frmCadFilial("Gravar");
						$this->listaFiliais();
					}
				break;
				
				case "Excluir":
					$this->setaDadosFilial();
					$this->frmCadFilial("Excluir");
					$this->listaFiliais();
				break;
				
				case "ALTERACAO":
					$this->setaDadosFilial();
					$this->frmCadFilial("Alterar");
					$this->listaFiliais();
				break;
				
				case "Sim":
					if ($this->excluiFilial()) {
						$this->clearProperties();
						$this->frmCadFilial("Gravar");
						$this->listaFiliais();
						echo "<script language='javaScript'>alert('Filial excluida com sucesso.');</script>";
					} else {
						$this->estId = "";
						$this->cidId = "";
						$this->frmCadFilial("Gravar");
						$this->listaFiliais();
					}
				break;
				
				case "N&atilde;o":
					$this->clearProperties();
					$this->frmCadFilial("Gravar");
					$this->listaFiliais();
				break;
				
			    default:
					$this->frmCadFilial("Gravar");
					$this->listaFiliais();
			    break;
			}
		}
		
        function frmCadFilial($operacao)
        {	
			GLOBAL $PHP_SELF;
			$PHP_SELF = $_SERVER["SCRIPT_NAME"];
			
			$botao = "<input type='hidden' name='filId' value='".$this->filId."'>";
						
			$bloqueia = false;
						
			if (trim($this->estId) != "") {
				if (trim($this->cidId) != "") {
					$botao .= "<input type='hidden' name='cidId' value='".$this->cidId."'>";
				}
			}
			
			switch (trim($operacao)) {
				case "Gravar":
					$titulo = "Inclus&atilde;o";
					$botao .= "<input class='botao' type='submit' name='acao' value='$operacao'>";  
				break;
				
				case "Alterar":
					$titulo = "Inclus&atilde;o";
					$botao .= "<input class='botao' type='submit' name='acao' value='$operacao'>";  
				break;
				
				case "Excluir":
					$bloqueia = true;
					$titulo = "Exclus&atilde;o";
					$botao .= "<b>Confirma a exclus&atilde;o da filial?</b><br>";
					$botao .= "<input class='botao' type='submit' name='acao' value='Sim'>";  
					$botao .= "<input class='botao' type='submit' name='acao' value='N&atilde;o'>";  
				break;
			}

			
			$form =  "\n <FORM METHOD='POST' action='".$PHP_SELF."'> ";
			$form .= "\n	<TABLE width='500px' class=\"contorno_form\"   align='center'>";  
			$form .= "\n		<TR>";  
			$form .= "\n			<TD colspan='2' class='cabecalho_form' align='center'><h3>Cadastro de Unidades - $titulo</h3></TD>";  
			$form .= "\n		</TR>";  
			$form .= "\n		<TR>";  
			$form .= "\n			<TD width='80px' class='texto'>Estado:*</TD>";  
			$form .= "\n			<TD width='420px' class='texto'>".$this->getElement->getCombo('estId', $this->estId, $this->montaArrayEstados(),"onChange='submeter(this);'", 'Selecione' ,$bloqueia)."</TD>";  
			$form .= "\n		</TR>";  
			if (trim($this->estId) != "") {
				$form .= "\n		<TR>";  
				$form .= "\n			<TD width='80px' class='texto'>Cidade:*</TD>";  
				$form .= "\n			<TD width='420px' class='texto'>".$this->getElement->getCombo('cidId', $this->cidId, $this->montaArrayCidades(), '', 'Selecione' ,$bloqueia)."</TD>";  
				$form .= "\n		</TR>";  
				$form .= "\n		<TR>";  
				$form .= "\n			<TD width='80px' class='texto'>Descri&ccedil;&atilde;o:*</TD>";  
				$form .= "\n			<TD width='420px' class='texto'>".$this->getElement->getText('filDescricao', $this->filDescricao, 60, 75, $bloqueia)."</TD>";  
				$form .= "\n		</TR>";  
			}
			
            $form .= "\n		<TR>";  
			$form .= "\n			<TD colspan=2 class='texto'><hr></TD>";  
			$form .= "\n		</TR>";
						
			$form .= "\n		<TR align='center'>";  
			$form .= "\n			<TD colspan='2' class='contorno_form'>";  
			$form .= "\n				$botao";  
			$form .= "\n			</TD>";  
			$form .= "\n		</TR>";  
			$form .= "\n	</TABLE>";  
			$form .= "\n</FORM>";  
			$form .= "\n";  
			
			echo $form;
			$this->alert();
			
			$js = "<script language='javaScript'>
					function submeter(obj)
					{
						var form = obj.form;
						form.acao.value = 'RECARREGAR';
						form.submit();
					}
				</script>";
			echo $js;
        }
	
		function alert()
		{
		
			if(count($this->erro) > 1 ){
				$erros = implode('\\n' , $this->erro);
				$js = "<script javascript>alert('".$erros."');</script>";
				echo $js;
			}
		}
		
		function listaFiliais()
		{
			GLOBAL $PHP_SELF;
			$PHP_SELF = $_SERVER["SCRIPT_NAME"];
			
			$dados = $this->carregaFiliais();
			
			$table = "<TABLE class='contorno_form' align='center' width='100%'>";
			$table .= "<TR>";
			$table .= "		<TD colspan='7' align='center' class='cabecalho_form'><h3>Listagem de Unidades</h3></TD>";
			$table .= "</TR>";
			$table .= "<TR class='contorno_form'>";
			$table .= "		<TD class=\"contorno_form\">C&oacute;digo</TD>";
			$table .= "		<TD width='100px'class=\"contorno_form\">Pa&iacute;s</TD>";
			$table .= "		<TD class=\"contorno_form\">Estado</TD>";
			$table .= "		<TD class=\"contorno_form\">Cidade</TD>";
			$table .= "		<TD width='150px'class=\"contorno_form\">Descri&ccedil;&atilde;o</TD>";
			$table .= "</TR>";	
			$i=1;
			if (count($dados) > 0) {
				foreach ($dados as $chave => $dadosFilial) {
					$table .= "<TR>";
					$table .= "		<TD class=\"linha".$i."\" align='RIGHT'>".$dadosFilial["FIL_ID"]."</TD>";
					$table .= "		<TD width='130px'class=\"linha".$i."\">".$dadosFilial["PAIS_DESCRICAO"]."</TD>";
					$table .= "		<TD class=\"linha".$i."\" align='CENTER'>".$dadosFilial["EST_SIGLA"]."</TD>";
					$table .= "		<TD class=\"linha".$i."\">".$dadosFilial["CID_DESCRICAO"]."</TD>";
					$table .= "		<TD width='150px'class=\"linha".$i."\">".$dadosFilial["FIL_DESCRICAO"]."</TD>";
					$table .= "		<TD width='10px' align='right'  class=\"linha".$i."\" >";
					$table .= "		<a class=\"texto_link\" href='".$PHP_SELF."?acao=ALTERACAO&filId=".$dadosFilial["FIL_ID"]."'> ";
					$table .="		<center><img class='linha".$i."' src=imagens/alterar.jpg></a></td>";
					$table .= "		<TD width='10px' align='right'  class=\"linha".$i."\" >";
					$table .= "		<a class=\"texto_link\" href='".$PHP_SELF."?acao=Excluir&filId=".$dadosFilial["FIL_ID"]."'> ";
					$table .="		<center><img class='linha".$i."' src=imagens/excluir.gif></a></td>";
					$table .= "</TR>";		
					$i++;										
					if($i>2){$i=1;}
				}
			} else {
				$table .= "<TR>";
				$table .= "		<TD colspan='7' class='linha1' align='center'><b>Nada a Listar</b></TD>";
				$table .= "</TR>";
			}
			$table .= "</TABLE>";
			echo $table;
		}
						
		function validaDados()
		{
			$retorno = false;
			
			if (trim($this->estId) == "") {
				$this->erro[] = 'O campo Estado deve ser selecionado';
			} else {
				if (trim($this->cidId) == "") {
					$this->erro[] = 'O campo Cidade deve ser selecionado';
				} 
				
				if (trim($this->filDescricao) == "") {
					$this->erro[] = 'O campo Descri&ccedil;&atilde;o deve ser informado';
				}
			}
			
			if (count($this->erro) <= 1) {
				$retorno = true;
			}
			return $retorno;
		}
	
		function montaArrayEstados()
		{
			$sql = "select EST_ID, EST_SIGLA, EST_DESCRICAO "
				."\n from ESTADOS"
				."\n order by EST_DESCRICAO";
				
			$this->QRY->TQuery($sql);
			$array = array();
			
			while ($linha = $this->QRY->fetchrow()) {
				
				$chave = $linha["EST_ID"];
				$array[$chave] = $linha["EST_SIGLA"]." - ".$linha['EST_DESCRICAO'];
				
			}
			return $array;
		}
		
		function montaArrayCidades()
		{
			$QRY = new genericQuery($this->conn);	
			
			$sql = "select CID_ID, CID_DESCRICAO"
				."\n from CIDADES "
				."\n where EST_ID = '".$this->estId."'";
				
			$QRY->TQuery($sql);			
			$array = array();
			
			while ($linha = $QRY->fetchrow()) {
				$chave = $linha["CID_ID"];
				$array[$chave] = trim($linha["CID_DESCRICAO"]);
			}	
			return $array;	
		}
  
		function carregaFiliais()
		{
			$sql = "select E.EST_SIGLA, C.CID_DESCRICAO, F.CID_ID, F.FIL_ID, F.FIL_DESCRICAO, P.PAIS_DESCRICAO"
				."\n from FILIAIS F"
				."\n inner join CIDADES C on (F.CID_ID = C.CID_ID)"
				."\n inner join ESTADOS E on (C.EST_ID = E.EST_ID)"
				."\n inner join PAIS P on (E.PAIS_ID = P.PAIS_ID)";
			
			$this->QRY->TQuery($sql);
			$array = array();
			$cont = 0;
			
			while ($linha = $this->QRY->fetchrow()) {
				$array[$cont]["EST_SIGLA"] = $linha["EST_SIGLA"];
				$array[$cont]["CID_DESCRICAO"] = $linha["CID_DESCRICAO"];
				$array[$cont]["CID_ID"] = $linha["CID_ID"];
				$array[$cont]["FIL_ID"] = $linha["FIL_ID"];
				$array[$cont]["FIL_DESCRICAO"] = $linha["FIL_DESCRICAO"];
				$array[$cont]["PAIS_DESCRICAO"] = $linha["PAIS_DESCRICAO"];
				$cont++;
				
			}
			return $array;
		}
		
		function setaDadosFilial()
		{
			$sql = "select F.CID_ID, E.EST_ID, F.FIL_DESCRICAO"
				."\n from FILIAIS F, CIDADES C, ESTADOS E"
				."\n where F.CID_ID = C.CID_ID"
				."\n and C.EST_ID = E.EST_ID"
				."\n and F.FIL_ID = ".$this->filId;
				
			$this->QRY->TQuery($sql);
			
			if ($linha = $this->QRY->fetchrow()) {
				$this->cidId = $linha["CID_ID"];
				$this->estId = $linha["EST_ID"];
				$this->filDescricao = $linha["FIL_DESCRICAO"];
			}
		}
			
		function gravaFilial()
		{
			$sql = "select coalesce(max(FIL_ID),0)+1 as FIL_ID from FILIAIS";
			$this->QRY->TQuery($sql);
			$linha = $this->QRY->fetchrow();
			
			$sql = "insert into FILIAIS"
				."\n (FIL_ID, FIL_DESCRICAO, CID_ID) "
				."\n values (".$linha['FIL_ID'].", '".$this->filDescricao."', ".$this->cidId.")";
			
			$this->QRY->TQuery($sql, false);
			
			if ( $this->QRY->errors != "" ) {
				$this->QRY->rollback();
				array_push($this->erro, $this->QRY->errors);
				return false;
			} else {	
				$this->QRY->commit();
				return true;
			}
		}
		
		function alterarFilial()
		{
			$sql = "update FILIAIS set"
				."\n  FIL_DESCRICAO = '".$this->filDescricao."'"
				."\n , CID_ID = ".$this->cidId
				."\n where FIL_ID = ".$this->filId;
			
			$this->QRY->TQuery($sql, false);
			
			if ( $this->QRY->errors != "" ) {
				array_push($this->erro, $this->QRY->errors);
				return false;
			} else {	
				$this->QRY->commit();
				return true;
			}
		}
		
		function excluiFilial()
		{
			$sql = "select count(*) as TOTAL"
				."\n from LINHAS"
				."\n where FIL_ID = ".$this->filId;
				
			$this->QRY->TQuery($sql);
			$linha = $this->QRY->fetchrow();
			
			if ($linha["TOTAL"] > 0) {
				array_push($this->erro, 'Existem linhas cadastradas para a Unidade, não é possível realizar a exclusão');
				return false;
			} else {
				$sql = "delete from `FILIAIS`"
					."\n where `FIL_ID` = ".$this->filId;
					
				$this->QRY->TQuery($sql, false);
				
				if ( $this->QRY->errors != "" ) {
					$this->QRY->rollback();
					array_push($this->erro, $this->QRY->errors);
					return false;
				} else {	
					$this->QRY->commit();
					return true;
				}
			}
		}
	}
?>